<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //创建一个对象
        var obj={
            name:"孙悟空",
            age:18,
            gender:"男",
            sayName:function(){
                alert(this.name);
            }
        };
        // var obj2={
        //     name:"猪八戒",
        //     age:28,
        //     gender:"男",
        //     sayName:function(){
        //         alert(this.name);
        //     }
        // };
        // var obj2={
        //     name:"沙和尚",
        //     age:48,
        //     gender:"男",
        //     sayName:function(){
        //         alert(this.name);
        //     }
        // };


        /* 
        使用工厂方法创建对象
        通过该方法可以大批量的创建新对象
        */
       function createperson(name,age,gender){
           //创建一个新对象
           var obj =new Object();
            // 向对象中添加属性
           obj.name=name;
           obj.age=age;
           obj.gender=gender;
           obj.sayName=function(){
               alert(this.name);
           }
           //将新对象返回
           return obj;
       }
       var obj2=createperson("猪八戒",28,"男");
       var obj3=createperson("白骨精",68,"女");
       var obj4=createperson("如来",268,"男");

       console.log(obj2);
       console.log(obj3);
       console.log(obj4);
       /* 
        使用工厂方法创建的对象，使用的构造函数都是object
        所以创建的对象都是object这个类型
        就导致我们无法区分出多种不同类型的对象
       */
       function createdog(name,age,gender){
           //创建一个新对象
           var obj =new Object();
            // 向对象中添加属性
           obj.name=name;
           obj.age=age;
           obj.gender=gender;
           obj.sayName=function(){
               alert("汪汪");
           }
           //将新对象返回
           return obj;
       }
       var dog=createperson("旺财",268,"男");

        console.log(dog);
    </script>
</head>
<body>
    
</body>
</html>